
// 模块的概念：“内部模块”现在称做“命名空间”，“外部模块”则简称为“模块”
// 模块有自己的作用域，里面的变量不会影响外部，除非导入该模块
// 一般把一些公共的功能单独抽离成一个文件作为一个模块
// ts 支持es6的模块导入导出
// export module ModuleSyntax {
// }

// 没有导入Modules直接使用，是无法访问的
// console.log(Modules);       //undefined
// getData(9);  //error 无法直接访问另一个模块内的变量或函数或类

// import { dbUrl, getData, saveData as save } from './modules/Db'
// console.log(getData(9));

// console.log(dbUrl);
// save()

// 通过通配符(*)，导入所有暴露的成员，并 as 一个别名
// import * as info from './modules/Db'
// {
//     // info.valA = '你吃饭了吗？'  //error ：通过 import 导入的valA，valB 是只读的
//     console.log(info.valA, info.valB);
//     info.setVal('你吃饭了吗', '吃过了');
//     console.log(info.valA, info.valB);
// }

// 演示user,article 泛型类的导入导出
import { UserClass, UserModel } from "./modules/UserClass";
import { ArticleClass, ArticleModel } from './modules/ArticleClass'

let u = new UserClass();
u.username = '君子'
u.password = 'junzi'
UserModel.add(u);

let a = new ArticleClass();
a.title = '新闻标题'
a.desc = '新闻内容'
ArticleModel.add(a);
